package com.hcss.core.util;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.Random;

/** 
 * @ClassName: StringUtil 
 * @Description:  常用字符串操作
 * @author lvfang
 * @date 2013-4-1 下午3:23
 *  
 */
@SuppressWarnings({"static-access"})
public class StringUtils extends org.springframework.util.StringUtils{
	// 流水号格式化
	public static DecimalFormat decimalFormat = new DecimalFormat("0000");
	public static DecimalFormat projectDecimalFormat = new DecimalFormat("000");
	private static Random random = new Random();
	public static int rand(int max){
		return random.nextInt(max+1);
	}
	public static int rand(int min, int max){
		if(min<max){
			if(min>0){
				return rand(max-min)+min;
			}else{
				return rand(max);
			}
		}else{
			return min;
		}
	}
	/** 
	* @Title: isNotEmpty 
	* @Description:  判断字符串是否为null或是否为""
	* @param  str 当前字符串
	* @return Boolean    
	* @throws 
	*/ 
    public static boolean isNotEmpty(String str) {  
        if (null != str && !"".equals(str.trim()) && !"null".equals(str.trim()) && !"none".equals(str.trim()))   
            return true;   
        else  
            return false;   
    }
    public static boolean isEmpty(String string){
    	return null == string || string.trim().length() == 0 || "null".equals(string.trim()) || "none".equals(string.trim());
    }
   
	public static int getCurrentYear(){
		Calendar cal=Calendar.getInstance(); 
		return cal.get(cal.YEAR);
	}
	
	public static String getObjectValue(Object obj) {
		if (obj == null) {
			return "";
		}else {
			String strObj = obj.toString();
			strObj = strObj.replaceAll(" ", "");
			strObj = strObj.trim();
			return strObj;
		}
	}
	
	/**
	 * 获取小数点后面几位的字符串
	 * @param value		double值
	 * @param n			小数点后面的位数
	 * @return
	 */
	public static String getDoubleValue(double value, int n) {
		return  new BigDecimal(value).setScale(n,BigDecimal.ROUND_HALF_UP).toString();
	}
	
	/**
	 * 删除double 后面的 .0
	 * @param value
	 * @return
	 */
	public static String removeZero(String value) {
		/*
		if (value.indexOf("%") == -1 && value.indexOf(".0") != -1) {
			value = value.substring(0, value.length()-2);
		}*/
		value = removeLastZero(value);
		return value;
	}
	
	/**
	 * 删除double 后面的 .0
	 * @param value
	 * @return
	 */
	public static String removeLastZero(String value) {
		
		if (value.length() >=1 && value.lastIndexOf(".") == value.length()-1) {
			value = value.substring(0, value.length()-1);
		}else if(value.length() >=2 && value.lastIndexOf(".0") == value.length()-2){
			value = value.substring(0, value.length()-2);
		}else if(value.length() >= 3 && value.lastIndexOf(".00") == value.length()-3){
			value = value.substring(0, value.length()-3);
		}
		return value;
	}
	
	
	public static String removeLastZeroFromObject(Object obj) {
		String value = getObjectValue(obj);
		if (isNotEmpty(value)) {
			if (value.length() >=1 && value.lastIndexOf(".") == value.length()-1) {
				value = value.substring(0, value.length()-1);
			}else if(value.length() >=2 && value.lastIndexOf(".0") == value.length()-2){
				value = value.substring(0, value.length()-2);
			}else if(value.length() >= 3 && value.lastIndexOf(".00") == value.length()-3){
				value = value.substring(0, value.length()-3);
			}
		}
		return value;
	}
	
	public static void main(String[] args) {
		String s = "90.00";
		System.out.println(s.lastIndexOf(".00"));
	}
	/**
	 * 获取数字的货币显示格式
	 * @param doubleValue	double值
	 * @return				格式化字符串
	 */
	public static String getCurrncyFormatValue(double d) {
		return new DecimalFormat(",###.##").format(d);
	}
	
	/**
	 * 获取数字的百分比显示格式
	 * @param doubleValue	double值
	 * @return				格式化字符串
	 */
	public static String getPercentValue(double d) {
		return new DecimalFormat("#.##%").format(d);
	}
	/**
	 * 计算字符串长度(中文字符占两个字符，英文字符一个字符)
	 * @param str
	 * @return
	 */
	public static int length(String str){
	  try{
		  str = new String (str.getBytes("gb2312"),"iso-8859-1");
	  }catch(Exception e){
		  return 0;
	  }
	  return str.length();
	}
	
	/**
	 * 去掉json中的特殊字符
	 * @param json	json字符串
	 * @return		转义后的字符串
	 */
	public static String removeJSONSpecialCharacters(String json) {
		if(json.indexOf("'")!=-1){  
		    //将单引号转义一下，因为JSON串中的字符串类型可以单引号引起来的  
			json = json.replaceAll("'", "\\'");  
		}  
		if(json.indexOf("\"")!=-1){  
		    //将双引号转义一下，因为JSON串中的字符串类型可以单引号引起来的  
		    json = json.replaceAll("\"", "\\\"");  
		}  
		  
		if(json.indexOf("\r\n")!=-1){  
		    //将回车换行转换一下，因为JSON串中字符串不能出现显式的回车换行  
		    json = json.replaceAll("\r\n", "\\u000d\\u000a");  
		}  
		if(json.indexOf("\n")!=-1){  
		    //将换行转换一下，因为JSON串中字符串不能出现显式的换行  
		    json = json.replaceAll("\n", "\\u000a");  
		} 
		return json;
	}
	

}
